﻿using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using MaxStoreErp.Core.BaseClasses;
using MaxStoreErp.Core.Interfaces;

namespace MaxStoreShop.Domain.Directories
{
    public class StoreUser : EntityBase, IUser
    {
        string _firstName;
        string _lastName;
        byte[] _fotoRaw;
        string _displayName;

        /// <summary>
        /// Имя пользователя
        /// </summary>
        [Required]
        [StringLength(100)]
        public string FirstName
        {
            get { return _firstName; }
            set
            {
                OnPropertyChanged(ref _firstName, value, "FirstName");
                DisplayName = string.Format("{0} {1}", LastName, FirstName);
            }
        }

        /// <summary>
        /// Фамилия пользователя
        /// </summary>
        [Required]
        [StringLength(150)]
        public string LastName
        {
            get { return _lastName; }
            set
            {
                OnPropertyChanged(ref _lastName, value, "LastName");
                DisplayName = string.Format("{0} {1}", LastName, FirstName);
            }
        }

        /// <summary>
        /// Пароль пользователя
        /// </summary>
        [Required, StringLength(25)]
        public string SecretCode { get; set; }

        /// <summary>
        /// Телефонные номера пользователя
        /// </summary>
        public string Phones { get; set; }

        /// <summary>
        /// Электронные почтовые адреса пользователя
        /// </summary>
        public string Emails { get; set; }

        /// <summary>
        /// Сырой массив байт фотографии пользователя
        /// </summary>
        public byte[] FotoRaw
        {
            get { return _fotoRaw; }
            set { OnPropertyChanged(ref _fotoRaw, value, "FotoRaw"); }
        }

        /// <summary>
        /// Отображаемое имя
        /// </summary>
        [NotMapped]
        public string DisplayName
        {
            get { return _displayName; }
            set { OnPropertyChanged(ref _displayName, value, "DisplayName"); }
        }

        public override string ToString()
        {
            return DisplayName;
        }
    }
}
